package builders;

import entidades.DesenhoDinamico;
import entidades.Estilo;
import entidades.Familia;
import entidades.Rectangulo;
import entidades.Telha;
import entidades.TipoTelha;

/**
 * Trabalho DAS - 2014/2015
 *
 * @author a21210380, a21190325, a21210392
 */
public class BuilderDeTelha {

    private Familia familia = null;
    private Rectangulo rectangulo = null;
    private TipoTelha tipoDeTelha = null;
    private Estilo estilo = null;
    private DesenhoDinamico desenho = null;
    
    public void setFamilia(Familia familia) {
        this.familia = familia;
    }
    
    public Familia getFamilia() {
        return this.familia;
    }
    
    public void setRectangulo(Rectangulo rectangulo) {
        this.rectangulo = rectangulo;
    }
    
    public Rectangulo getRectangulo() {
        return this.rectangulo;
    }
    
    public void setEstilo(Estilo estilo) {
        this.estilo = estilo;
    }
    
    public Estilo getEstilo() {
        return this.estilo;
    }
    
    public void setTipoDeTelha(TipoTelha tipoDeTelha) {
        this.tipoDeTelha = tipoDeTelha;
    }
    
    public TipoTelha getTipoDeTelha() {
        return tipoDeTelha;
    }
    
    public void setDesenhoDinamico(DesenhoDinamico desenhoDinamico) {
        this.desenho = desenhoDinamico;
    }
    
    public DesenhoDinamico getDesenhoDinamico() {
        return desenho;
    }
    
    public boolean estaPronto() {
        return familia != null && tipoDeTelha != null && rectangulo != null && estilo != null && desenho != null;
    }
    
    public final Telha construirEstilo() {
        if(estaPronto()) {
            return new Telha(familia, rectangulo, tipoDeTelha, estilo, desenho);
        }
        throw new IllegalStateException("A telha não está pronto!");
    }
    
}
